iT邦幫忙

2024 iThome 鐵人賽

DAY 0
0
自我挑戰組

ASP.NET Core生成網站記錄系列 第 2

DAY2-建立MVC與資料庫應用程式完整過程

  • 分享至 

  • xImage
  •  
構建專案(Build):

目的:將原始程式碼轉換為執行的程式或應用程式。
過程:
編譯(Compile):將高階語言的原始碼轉換為機器碼。
連結(Link):將不同的編譯單元和函式庫組合成一個可執行檔。
壓縮(Packaging):可以建立壓縮包成某種分配格式,如安裝包或壓縮檔。
結果:產生一個或多個執行檔或可設定的軟體包。
執行專案(Run):

目的:在目標環境中運行已建立的應用程序,以測試或使用其功能。
過程:
啟動(Launch):載入並開始執行執行檔。
運行(Execute):程式依設計邏輯運行,可能需要與使用者互動或處理資料。
結果:應用程式在目標環境中運行,提供預期的功能或服務。

建立一個 MVC 與資料庫應用程式的過程可以分成幾個步驟,從設計、開發到部署。這裡將以 ASP.NET Core MVC 與 Entity Framework (EF) Core 搭配 SQL Server 資料庫作為範例。

  1. 環境設置
    1.1. 安裝必要工具
    .NET SDK: 下載並安裝最新版本的 .NET SDK 下載連結.
    NET SDK (Software Development Kit)
    定義: .NET SDK 是一套完整的工具和庫的集合,用於開發、構建和運行 .NET 應用程式。它提供了一組標準化的接口和工具,讓開發者可以更輕鬆地建立 .NET 應用程式。
    功能:
    .NET CLI: 命令列介面,用於建立、構建、運行和發布 .NET 應用程式。
    編譯器: 將程式碼轉換為機器碼。
    偵錯工具: 幫助開發者找出程式碼中的錯誤。
    NuGet Client: 用於管理 NuGet 包。
    作用: .NET SDK 提供了開發 .NET 應用程式所需的基礎設施,就像是建築工地上的工具箱,包含了各種工具和材料。

  2. 建立 ASP.NET Core MVC 專案
    2.1. 建立專案
    dotnet new mvc -n MyMvcApp
    進入專案資料夾:
    cd MyMvcApp

2.2. 執行專案
測試專案是否成功建立並執行:
dotnet run
3. 加入資料庫 (Entity Framework Core)
3.1. 安裝 EF Core
使用 NuGet 安裝 Entity Framework Core 和 SQL Server 提供者:

dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Microsoft.EntityFrameworkCore.Tools
3.2. 建立資料模型 (Entities)
在專案中建立 Models 資料夾,並在其中建立一個實體類別,例如 Product.cs:

public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
3.3. 建立資料庫上下文 (DbContext)
在 Data 資料夾中建立 AppDbContext.cs:

using Microsoft.EntityFrameworkCore;
using MyMvcApp.Models;

public class AppDbContext : DbContext
{
public AppDbContext(DbContextOptions options)
: base(options)
{
}

public DbSet<Product> Products { get; set; }

}
3.4. 設定連接字串
在 appsettings.json 中添加連接字串:

"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\mssqllocaldb;Database=MyMvcAppDb;Trusted_Connection=True;"
}
在 Startup.cs 中設定資料庫服務:

public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddDbContext(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
}
4. 建立資料庫
4.1. 建立初始遷移
使用以下命令來創建數據庫遷移:

dotnet ef migrations add InitialCreate

如果沒安裝到efcore命令工具會有提示教你裝
dotnet ef migrations add InitialCreate 與 InitialDB 的差異
通常沒有實質差異: 在大多數情況下,使用 InitialCreate 或 InitialDB 來命名第一次遷移,對系統的運行不會產生任何影響。EF Core 會根據遷移腳本中的內容來執行相應的 SQL 指令,而不會特別區分名稱的細微差別。
命名慣例的重要性: 儘管如此,使用一致的命名慣例還是非常重要的。這有助於提高代碼的可讀性、可維護性,並且讓團隊成員更容易理解遷移的意圖。

---
dotnet ef migrations add InitialCreate 這行指令在 .NET Core 中使用 Entity Framework Core (EF Core) 時,就是用來 建立初始的遷移 (migration) 檔案 的。

什麼是遷移 (migration)?
概念: 遷移是一種追蹤資料庫變更的方式。當我們修改了資料模型 (例如新增、修改或刪除實體或屬性),EF Core 可以自動產生遷移腳本,這些腳本描述了如何將資料庫從一個狀態遷移到另一個狀態。
作用:
版本控制: 讓資料庫的變更有版本控制,方便追蹤和回溯。
自動化: 可以自動將資料庫更新到最新的狀態。
多人協作: 不同開發者可以同時對資料模型進行修改,然後合併遷移。
---

4.2. 更新資料庫
應用遷移並生成資料庫:

dotnet ef database update
5. 建立控制器與視圖
5.1. 建立控制器
使用 Entity Framework 的控制器:

dotnet aspnet-codegenerator controller -name ProductsController -m Product -dc AppDbContext --relativeFolderPath Controllers --useDefaultLayout --referenceScriptLibraries
5.2. 建立視圖
上述命令會自動生成 CRUD 視圖 (Create, Read, Update, Delete) 操作,並根據 Product 模型生成對應的頁面。
6. 執行與測試應用程式
執行應用程式,並訪問 /Products 頁面以測試 CRUD 功能:

dotnet run
7. 部署
7.1. 發佈專案
發佈應用程式:

dotnet publish -c Release -o ./publish
7.2. 部署到伺服器
根據伺服器類型選擇部署方式,例如 IIS、Azure、Docker 等。

DOTNET PACK打包成NUGET套件

使用 dotnet pack 命令將程式碼打包成 NuGet 套件有多種理由,特別是在軟體開發過程中,這有助於分享、復用、發佈和版本控制。

打包成 NuGet 套件的原因:
分享和重複使用程式碼:

當你有一段程式碼或一個程式庫(Library)是通用且可復用的時候,將它打包成 NuGet 套件可以輕鬆地分享給團隊或其他開發者使用。這樣,你的解決方案可以在多個專案中重複使用,而不需要每次都手動複製程式碼。
版本控制和發佈:

使用 NuGet 套件來管理程式庫可以很容易地進行版本控制。當你更新了程式庫的功能或修復了問題時,可以發佈一個新版本的套件。使用者可以根據需要選擇適合的版本進行升級或維護。
模組化程式設計:

把程式碼打包成 NuGet 套件有助於實現應用程式的模組化設計。每個功能模組(例如資料庫操作、身份驗證、日誌系統等)都可以打包成獨立的 NuGet 套件,這樣可以使專案結構更加清晰,且易於維護。
依賴管理:

NuGet 提供了一個強大的依賴管理機制。當你的 NuGet 套件依賴於其他套件或庫時,可以將這些依賴項自動加入到使用者的專案中,避免手動配置。
簡化部署流程:

將程式庫打包成 NuGet 套件,並發佈到內部或公共的 NuGet 資源庫(如 NuGet.org)之後,可以通過簡單的 dotnet add package 命令直接將這些套件引入到任何專案中,簡化了部署和管理過程。
封裝內部功能:

當你的專案有某些功能需要封裝起來(如敏感邏輯或專屬技術),打包成 NuGet 套件可以封裝這些功能,保護實現細節。
持續集成與交付 (CI/CD):

在軟體開發中,CI/CD 流程通常包含自動化的測試、打包和發佈過程。透過 dotnet pack,可以將經過測試的程式庫自動打包為 NuGet 套件並上傳到 NuGet 資源庫,實現自動化的交付和部署。
如何使用 dotnet pack:
使用 dotnet pack 命令可以將專案打包成 NuGet 套件:


dotnet pack
若要發佈到 NuGet 資源庫,通常需要使用 dotnet nuget push 命令將打包好的 .nupkg 套件發佈到 NuGet 伺服器:


dotnet nuget push <path-to-package> -k <api-key> -s https://api.nuget.org/v3/index.json


上一篇
DAY1 MVC歷史每代改版內容
下一篇
DAY3- ASP.NET CORE CONFIGURATION組態及選項模式介紹
系列文
ASP.NET Core生成網站記錄31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言